/**
 * 工具包集成
 * 这里会自动注入部分函数至vue的原型，以方便所有子实例使用this.调用，或者自行导入也可以
 * 其中也会包装部分实用业务相关的函数，以供方便快速调用
 * 自定义工具包均挂在在vue实例下，使用$u_来方便和其他根实例的区分
 */
import * as util from './util.js'
import log from './log'

uni.$util = util
uni.$log = log

// 以下是业务相关的封装函数实例

/**
 * url 跳转地址
 * type /to/tab 分别对应navigateTo和switchTable
 */
uni.$to = (url, type = 'navigateTo', params = {}) => {
  if (type === 'switchTab' || type === 'tab') {
    uni.switchTab({
      url
    })
    return
  }
  uni.$u.route({
    url,
    params,
    animationType: 'slide-in-right'
  })
}

uni.$back = (url, params = {}) => {
  let pages = getCurrentPages()
  // 历史记录中页面个数大于一个，可以返回
  if (pages.length > 1) {
    uni.navigateBack({
      delta: 1
    })
  }
  // 历史记录中只有一个界面，也就是当前页面时
  else {
    // 如果有需要跳转的页面
    if (url) uni.$u.route({
      type: 'redirect',
      url,
      params,
      animationType: 'slide-in-right'
    })
    // 如果没有需要跳转的页面，则跳转到首页
    else {
      uni.reLaunch({
        url: '/pages/index/index'
      })
    }
  }
}
